Make GdkDrawable draw_drawable backwards compat
authorAlexander Larsson <alexl@redhat.com>
Wed, 1 Jul 2009 17:50:49 +0000 (19:50 +0200)
committerAlexander Larsson <alexl@redhat.com>
Wed, 1 Jul 2009 17:50:49 +0000 (19:50 +0200)
Turns out pygtk build broke due to the argument addition to draw_drawable.
So, we now add a new vfunc for the new draw_drawable and are thus
backwards compat.

gdk/gdkdraw.c
gdk/gdkdrawable.h
gdk/gdkoffscreenwindow.c
gdk/gdkpixmap.c
gdk/gdkwindow.c
gdk/quartz/gdkdrawable-quartz.c
gdk/win32/gdkdrawable-win32.c
gdk/x11/gdkdrawable-x11.c

index ad0af7989a49b67d148487bb9b82d439006d7f55..b0ed2aeea9a94472173eeaf555a6f90244555f33 100644 (file)
@@ -668,13 +668,21 @@ gdk_draw_drawable (GdkDrawable *drawable,
      windows. We should clip that and (for windows with bg != None) clear that
      area in the destination instead. */
 
-  GDK_DRAWABLE_GET_CLASS (drawable)->draw_drawable (drawable, gc,
-                                                   composite_impl,
-                                                    xsrc - composite_x_offset,
-                                                    ysrc - composite_y_offset,
-                                                    xdest, ydest,
-                                                    width, height,
-                                                   src);
+  if (GDK_DRAWABLE_GET_CLASS (drawable)->draw_drawable_with_src)
+    GDK_DRAWABLE_GET_CLASS (drawable)->draw_drawable_with_src (drawable, gc,
+                                                              composite_impl,
+                                                              xsrc - composite_x_offset,
+                                                              ysrc - composite_y_offset,
+                                                              xdest, ydest,
+                                                              width, height,
+                                                              src);
+  else /* backwards compat for old out-of-tree implementations of GdkDrawable (are there any?) */
+    GDK_DRAWABLE_GET_CLASS (drawable)->draw_drawable (drawable, gc,
+                                                     composite_impl,
+                                                     xsrc - composite_x_offset,
+                                                     ysrc - composite_y_offset,
+                                                     xdest, ydest,
+                                                     width, height);
 
   g_object_unref (composite);
 }
index 21af0d1dc8702801ae654d4b9135f251cc4443e9..44beaf7fdd9d51418100884f5c6783ec06930ca8 100644 (file)
@@ -105,8 +105,7 @@ struct _GdkDrawableClass
                          gint          xdest,
                          gint          ydest,
                          gint          width,
-                         gint          height,
-                         GdkDrawable  *original_src);
+                         gint          height);
   void (*draw_points)   (GdkDrawable  *drawable,
                          GdkGC        *gc,
                          GdkPoint     *points,
@@ -210,6 +209,17 @@ struct _GdkDrawableClass
                                             int width,
                                             int height);
 
+  void (*draw_drawable_with_src)  (GdkDrawable  *drawable,
+                                  GdkGC               *gc,
+                                  GdkDrawable  *src,
+                                  gint         xsrc,
+                                  gint         ysrc,
+                                  gint         xdest,
+                                  gint         ydest,
+                                  gint         width,
+                                  gint         height,
+                                  GdkDrawable  *original_src);
+
   /* Padding for future expansion */
   void         (*_gdk_reserved7)  (void);
   void         (*_gdk_reserved9)  (void);
@@ -219,7 +229,6 @@ struct _GdkDrawableClass
   void         (*_gdk_reserved13) (void);
   void         (*_gdk_reserved14) (void);
   void         (*_gdk_reserved15) (void);
-  void         (*_gdk_reserved16) (void);
 };
 
 struct _GdkTrapezoid
index 8a020bbe60a511b260422143733f5d24214ae21e..438cc0c1a7df983fbeffaf43ecb6aa66a5bc4bd3 100644 (file)
@@ -1224,7 +1224,7 @@ gdk_offscreen_window_class_init (GdkOffscreenWindowClass *klass)
   drawable_class->draw_polygon = gdk_offscreen_window_draw_polygon;
   drawable_class->draw_text = gdk_offscreen_window_draw_text;
   drawable_class->draw_text_wc = gdk_offscreen_window_draw_text_wc;
-  drawable_class->draw_drawable = gdk_offscreen_window_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_offscreen_window_draw_drawable;
   drawable_class->draw_points = gdk_offscreen_window_draw_points;
   drawable_class->draw_segments = gdk_offscreen_window_draw_segments;
   drawable_class->draw_lines = gdk_offscreen_window_draw_lines;
index e9f33aa84713d22c343cf2819e76e6a1731ef762..3d298057701b648382173ac1f1ae1900a1c61dc0 100644 (file)
@@ -203,7 +203,7 @@ gdk_pixmap_class_init (GdkPixmapObjectClass *klass)
   drawable_class->draw_polygon = gdk_pixmap_draw_polygon;
   drawable_class->draw_text = gdk_pixmap_draw_text;
   drawable_class->draw_text_wc = gdk_pixmap_draw_text_wc;
-  drawable_class->draw_drawable = gdk_pixmap_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_pixmap_draw_drawable;
   drawable_class->draw_points = gdk_pixmap_draw_points;
   drawable_class->draw_segments = gdk_pixmap_draw_segments;
   drawable_class->draw_lines = gdk_pixmap_draw_lines;
index d15b660f7867d9ad77713c844881c6ad88a8c80b..cda7e83207794098cc8238167fe3cc2a6258b846 100644 (file)
@@ -419,7 +419,7 @@ gdk_window_class_init (GdkWindowObjectClass *klass)
   drawable_class->draw_polygon = gdk_window_draw_polygon;
   drawable_class->draw_text = gdk_window_draw_text;
   drawable_class->draw_text_wc = gdk_window_draw_text_wc;
-  drawable_class->draw_drawable = gdk_window_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_window_draw_drawable;
   drawable_class->draw_points = gdk_window_draw_points;
   drawable_class->draw_segments = gdk_window_draw_segments;
   drawable_class->draw_lines = gdk_window_draw_lines;
index be08c7db641da2386fb530b26dbcca70fb9c2b5a..b4b1e0364a7e6f5f71752747c9558c29ba565af8 100644 (file)
@@ -661,7 +661,7 @@ gdk_drawable_impl_quartz_class_init (GdkDrawableImplQuartzClass *klass)
   drawable_class->draw_polygon = gdk_quartz_draw_polygon;
   drawable_class->draw_text = gdk_quartz_draw_text;
   drawable_class->draw_text_wc = gdk_quartz_draw_text_wc;
-  drawable_class->draw_drawable = gdk_quartz_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_quartz_draw_drawable;
   drawable_class->draw_points = gdk_quartz_draw_points;
   drawable_class->draw_segments = gdk_quartz_draw_segments;
   drawable_class->draw_lines = gdk_quartz_draw_lines;
index e6c7e45ef7f3877213bf83fdf3c4c063d6cf99dc..d5a4376b857d06582f23e39b04639f9b00fee893 100644 (file)
@@ -180,7 +180,7 @@ gdk_drawable_impl_win32_class_init (GdkDrawableImplWin32Class *klass)
   drawable_class->draw_polygon = gdk_win32_draw_polygon;
   drawable_class->draw_text = gdk_win32_draw_text;
   drawable_class->draw_text_wc = gdk_win32_draw_text_wc;
-  drawable_class->draw_drawable = gdk_win32_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_win32_draw_drawable;
   drawable_class->draw_points = gdk_win32_draw_points;
   drawable_class->draw_segments = gdk_win32_draw_segments;
   drawable_class->draw_lines = gdk_win32_draw_lines;
index 9a69a3bb10ab01993798a7468b41f249a6da5019..537a47e0fb5d4da445d8eeb807746a5d23adefc5 100644 (file)
@@ -160,7 +160,7 @@ _gdk_drawable_impl_x11_class_init (GdkDrawableImplX11Class *klass)
   drawable_class->draw_polygon = gdk_x11_draw_polygon;
   drawable_class->draw_text = gdk_x11_draw_text;
   drawable_class->draw_text_wc = gdk_x11_draw_text_wc;
-  drawable_class->draw_drawable = gdk_x11_draw_drawable;
+  drawable_class->draw_drawable_with_src = gdk_x11_draw_drawable;
   drawable_class->draw_points = gdk_x11_draw_points;
   drawable_class->draw_segments = gdk_x11_draw_segments;
   drawable_class->draw_lines = gdk_x11_draw_lines;